/*============================================================================*/
/*                   CONTINENTAL AUTOMOTIVE SYSTEMS                           */
/*============================================================================*/
/*                        OBJECT SPECIFICATION                                */
/*============================================================================*
* name:            HALStateMachines.c
* version:         1.1
* created_by:      Lizette Acosta/Rodrigo Casados
* date_created:    June 22 2013
*=============================================================================*/
/* DESCRIPTION : State Machines                                               */
/*============================================================================*/
/* FUNCTION COMMENT : main function of Window Lifter                          */
/*                                                                            */
/*============================================================================*/
/*                               OBJECT HISTORY                               */
/*============================================================================*/
/*  REVISION |   DATE      |                               |      AUTHOR      */
/*----------------------------------------------------------------------------*/
/*  1.1      | 22/June/2013 |                              | Lizette Acosta   */
/*                                                           Rodrigo Casados  */
/*============================================================================*/
#include "stdtypedef.h"
#include "HALPorts.h"
#include "HALSelectMode.h"
#include "HALDebouncer.h"


/*============================================================================*/
/*                             vfn_ModeSelect                                 */
/*============================================================================*/
e_StateFlag u8fn_ModeSelect (void)
{
	static e_StateFlag seub_SelectedMode;

	
	vfn_ReadButtons(&seub_SelectedMode);	/* Reads the 2 buttons and writes the ID of the pressed one. 
									       Writes To_DEFINE if there's no event. */
							    
	switch(seub_SelectedMode)
	{
		case TO_DEFINE:
			/* No need to nofity TO_DEFINE status */
			return TO_DEFINE;			
		break;
			
		case BTTN1:
			vfn_Deboouncer(&seub_SelectedMode);
			if(seub_SelectedMode != TO_DEFINE && seub_SelectedMode != INVALID)
			{
				return BTTN1;	
			}
			else
			{	/* No need to nofity TO_DEFINE status */
			}		
		break;
		
		case BTTN2:	
			vfn_Deboouncer(&seub_SelectedMode);	
			if(seub_SelectedMode != TO_DEFINE && seub_SelectedMode != INVALID)
			{
				return BTTN2;	
			}
			else
			{	/* No need to nofity TO_DEFINE status */
			}				
		break;
		
		case INVALID:
								
			if(gub_DebouncerFlag) /* In case of mistaken gub_DebouncerFlag activation, */
			{					  /* call vfn_Deboouncer for clearing it and reseting */
								  /* State Machine */
								  
				vfn_Deboouncer(&seub_SelectedMode);
			}
			
			return INVALID;
			
		break;
		/* Default */
		default:
		break;
	}

	
}



